MBA em Gestão Estratégica em Banking - In Company Banrisul - UNISINOS

  • Estatística e econometria para gestão de risco de crédito e da formação da carteira de investimentos

  • Ano/Semestre: 2020/1

  • Professor: Prof. Msc. Davi Souza Simon

Apresentação

  • Graduado em Ciências Contábeis (UFRGS 2004)
  • Mestrado em Ciências Contábeis (Unisinos 2013)
  • Doutorando em Ciências Contábeis (Unisinos), com sanduíche na Universidade de Graz - Austria
  • Cursos de Data Science na Johns Hopkins Bloomberg School of Public Health
  • Experiência como Auditor (E&Y e PwC) e consultor (Pagini Consultores, desde 2004)
  • Pesquisa e orientações sobre Machine Learning aplicado a previsão de insolvência e desidratação

Apresentação

  • Estatística como ferramenta de trabalho
  • Como as decisões são tomadas na sua organização?

Apresentação

  • Revisão de conceitos básicos
  • Estatística Descritiva
  • Teste de Hipóteses
  • Regressão Linear
  • Regressão Logística

Apresentação

A estatística é a arte de torturar os números até que eles confessem.

Referências Filosóficas

alt text

Referências Filosóficas

alt text

Referências Filosóficas

alt text

Correlação x Causa

Correlação x Causa

alt text

Correlação x Causa

alt text

Correlação x Causa

alt text

R como ferramenta para Data Science

  • O que é o R?
  • De onde ele vem?
  • Do que se alimenta?

Referências

Data Science

alt text

Data Science

plot of chunk unnamed-chunk-2

Data Science

plot of chunk unnamed-chunk-3

alt text

Data Science

install.packages("dslabs", repos = "http://cran.us.r-project.org")
install.packages("ggplot2", repos = "http://cran.us.r-project.org")
install.packages("tidyverse", repos = "http://cran.us.r-project.org")
library(tidyverse)
library(ggplot2)
library(dslabs)
ds_theme_set()

Data Science

plot of chunk unnamed-chunk-5

Data Science

plot of chunk unnamed-chunk-6

Dificuldades

  • Como chegar nos dados?
  • Como funciona a coleta?
  • Como realizar e documentar suas análises?
  • Como trabalhar com tarefas repetitivas?

Fluxo de trabalho

  • Coleta
  • Tratamento
  • Analise exploratória
  • Modelagem / Testes
  • Diagnóstico
  • Robustêz

Instalando o R

alt text

Instalando o R Studio

alt text

Iniciando o R Studio

alt text

alt text

Instalando um conjunto importante de pacotes

install.packages("tidyverse", repos = "http://cran.us.r-project.org")

The downloaded binary packages are in
    /var/folders/1z/gzlgfsf57b902d0l18952m1r0000gn/T//Rtmp5et3bW/downloaded_packages
library(tidyverse)

Aos dados

Analise

mpg
# A tibble: 234 x 11
   manufacturer model    displ  year   cyl trans   drv     cty   hwy fl    class
   <chr>        <chr>    <dbl> <int> <int> <chr>   <chr> <int> <int> <chr> <chr>
 1 audi         a4         1.8  1999     4 auto(l… f        18    29 p     comp…
 2 audi         a4         1.8  1999     4 manual… f        21    29 p     comp…
 3 audi         a4         2    2008     4 manual… f        20    31 p     comp…
 4 audi         a4         2    2008     4 auto(a… f        21    30 p     comp…
 5 audi         a4         2.8  1999     6 auto(l… f        16    26 p     comp…
 6 audi         a4         2.8  1999     6 manual… f        18    26 p     comp…
 7 audi         a4         3.1  2008     6 auto(a… f        18    27 p     comp…
 8 audi         a4 quat…   1.8  1999     4 manual… 4        18    26 p     comp…
 9 audi         a4 quat…   1.8  1999     4 auto(l… 4        16    25 p     comp…
10 audi         a4 quat…   2    2008     4 manual… 4        20    28 p     comp…
# … with 224 more rows

Aos dados

Analise

summary(mpg)
 manufacturer          model               displ            year     
 Length:234         Length:234         Min.   :1.600   Min.   :1999  
 Class :character   Class :character   1st Qu.:2.400   1st Qu.:1999  
 Mode  :character   Mode  :character   Median :3.300   Median :2004  
                                       Mean   :3.472   Mean   :2004  
                                       3rd Qu.:4.600   3rd Qu.:2008  
                                       Max.   :7.000   Max.   :2008  
      cyl           trans               drv                 cty       
 Min.   :4.000   Length:234         Length:234         Min.   : 9.00  
 1st Qu.:4.000   Class :character   Class :character   1st Qu.:14.00  
 Median :6.000   Mode  :character   Mode  :character   Median :17.00  
 Mean   :5.889                                         Mean   :16.86  
 3rd Qu.:8.000                                         3rd Qu.:19.00  
 Max.   :8.000                                         Max.   :35.00  
      hwy             fl               class          
 Min.   :12.00   Length:234         Length:234        
 1st Qu.:18.00   Class :character   Class :character  
 Median :24.00   Mode  :character   Mode  :character  
 Mean   :23.44                                        
 3rd Qu.:27.00                                        
 Max.   :44.00                                        

Aos dados

unique(mpg$manufacturer)
 [1] "audi"       "chevrolet"  "dodge"      "ford"       "honda"     
 [6] "hyundai"    "jeep"       "land rover" "lincoln"    "mercury"   
[11] "nissan"     "pontiac"    "subaru"     "toyota"     "volkswagen"

Aos dados

ggplot(data = mpg) + 
  geom_point(mapping = aes(x = displ, y = hwy))

plot of chunk unnamed-chunk-11

Aos dados

ggplot(data = mpg) + 
  geom_point(mapping = aes(x = displ, y = hwy, color = manufacturer))

plot of chunk unnamed-chunk-12

Aos dados

ggplot(data = mpg) + 
  geom_point(mapping = aes(x = displ, y = hwy, color = class))

plot of chunk unnamed-chunk-13

Aos dados

ggplot(data = mpg) + 
  geom_point(mapping = aes(x = displ, y = hwy)) + 
  facet_wrap(~ class, nrow = 2)

plot of chunk unnamed-chunk-14

Um exemplo mais recente

Informações Históricas da Natura S.A.

dados <- read_excel("NaturaTrim.xlsx",sheet=1, col_names = TRUE, col_types = NULL, na = "-", skip = 2)

Natura

Inspecionando o objeto importado alt text

Natura

Inspecionando o objeto importado alt text

Natura

Renomear colunas e reinspecionar o objeto Dados

colnames(dados) <- c("Data","Div_p_acao","Valor_Mercado","Ativo_Total","Patrim_Liq","Preço_Lucro"
                     ,"Retorno","Cotação","EBIT","Lucro_Liq","CaixaEq","Apl_Fin","Divida_Bruta",
                     "Liq_Bolsa","Negociabilidade","Beta2anos","Beta3anos","Debt_to_Equity",
                     "IDIV","IBOV","ISEE")

Natura

Como poderíamos analisar o valor de mercado da Companhia ao longo do tempo?

VM <- dados %>% 
      select(Data,Valor_Mercado)

Natura

Como poderíamos analisar o valor de mercado da Companhia ao longo do tempo?

ggplot(data = VM) + 
  geom_point(mapping = aes(x = Data, y= Valor_Mercado)) +
theme(axis.text.x=element_text(angle=90, hjust=1))

plot of chunk unnamed-chunk-18

Natura

Ajustando as datas

library(zoo)
VM$Data <- gsub("T","Q",VM$Data)
VM$Data <- as.Date(as.yearqtr(VM$Data, format = "%qQ%Y"))

Natura

Como poderíamos analisar o valor de mercado da Companhia ao longo do tempo?

ggplot(data = VM) + 
  geom_line(mapping = aes(x = Data, y= Valor_Mercado)) +
    theme(axis.text.x=element_text(angle=90, hjust=1))

plot of chunk unnamed-chunk-20

Natura

Retornos

Retornos <- dados %>% 
            select(Data,Retorno)

Retornos$Data <- gsub("T","Q",Retornos$Data)
Retornos$Data <- as.Date(as.yearqtr(Retornos$Data, format = "%qQ%Y"))

Natura

Descrição estatística dos retornos

  • Média
  • Mediana
  • Quartis
  • Variância
  • Desvio Padrão

Média

É média é a medida central mais comumente reportada. É a soma de todos os valores de nossas observações dividida pela quantidade de observações. Se temos \( n \) observações, a média é dada por:

\[ Média = \frac{x_1 + x_2 + \cdots + x_n}{n} \]

Mediana

A mediana é outra medida de tendência central. É importante pois a média pode ser altamente influenciável por observações com valores extremos. Ordenamos os valores de nossas observações do menor para o maior. O elemento do meio da lista é a mediana. Se a quantidade de obs for par, a mediana é a média dos dois termos centrais.

Desvio Padrão

A média não nos diz muito sobre a variabilidade das observações. Um conjunto formado por {0,100} tem a mesma média de um conjunto formado por {40,60}.

Para saber mais sobre a variabilidade, gostaríamos de uma medida de variação média.

Desvio Padrão

Desvio-padrão de uma amostra de dados resolve o problema da média 0. Apesar da fórmula parecer complexa, essencialmente ela nos diz essencialmente a distãncia de uma váriável em relação a sua própria média:

\( Desvio \, Padrão = \sqrt{\frac{(x_1 - Média)^2 + (x_2 - Média)^2 + \cdots + (x_n - Média)^2}{n - 1}} \)

\( Variância = {\frac{(x_1 - Média)^2 + (x_2 - Média)^2 + \cdots + (x_n - Média)^2}{n - 1}} \)

Natura

summary(Retornos)
      Data               Retorno       
 Min.   :2004-01-01   Min.   :-27.669  
 1st Qu.:2007-06-08   1st Qu.: -7.056  
 Median :2010-11-16   Median :  5.269  
 Mean   :2010-11-15   Mean   :  4.363  
 3rd Qu.:2014-04-23   3rd Qu.: 17.584  
 Max.   :2017-10-01   Max.   : 34.083  
                      NA's   :2        

Natura

Retornos <- Retornos %>% filter(!is.na(Retorno))
summary(Retornos)
      Data               Retorno       
 Min.   :2004-07-01   Min.   :-27.669  
 1st Qu.:2007-10-24   1st Qu.: -7.056  
 Median :2011-02-15   Median :  5.269  
 Mean   :2011-02-15   Mean   :  4.363  
 3rd Qu.:2014-06-08   3rd Qu.: 17.584  
 Max.   :2017-10-01   Max.   : 34.083  

Natura

ggplot(data = Retornos) + 
  geom_line(mapping = aes(x = Data, y= Retorno)) +
theme(axis.text.x=element_text(angle=90, hjust=1))

plot of chunk unnamed-chunk-24

Natura

ggplot(data = Retornos) + 
  geom_histogram(mapping = aes( x= Retorno), binwidth = 2, colour = "white", fill = "cornflowerblue", size = 0.1) +
  theme_bw() +
  stat_function(fun = function(x) dnorm(x, mean = mean(Retornos$Retorno), sd = sd(Retornos$Retorno)) * length(Retornos$Retorno)*2 ,
    color = "darkred", size = 1)

plot of chunk unnamed-chunk-25

Natura

Se a distribuição dos retornos for normal, poderíamos realizar inferência.

alt text

Natura

[1] "numeric"

plot of chunk unnamed-chunk-26

Natura

Inspecionem o objeto Retornos após rodar o código abaixo

Retornos <- Retornos %>% 
          mutate( media = mean(Retorno),
                  x_menos_m = Retorno - media,
                  x_menos_m2 = x_menos_m^2)

Natura

sum(Retornos$x_menos_m)
[1] -6.661338e-15
sum(Retornos$x_menos_m2)
[1] 13092.41

Natura

sum(Retornos$x_menos_m2)/(length(Retornos$x_menos_m2)-1)
[1] 247.0267
var(Retornos$Retorno)
[1] 247.0267

Natura

sqrt(sum(Retornos$x_menos_m2)/(length(Retornos$x_menos_m2)-1))
[1] 15.71708
sd(Retornos$Retorno)
[1] 15.71708

Natura

median(Retornos$Retorno)
[1] 5.268972

Exercício

  • Descrever estatísticamente o comportamento do valor do Ativo, do PL
  • Descrever estatisticamente o comportamento do ROE (Lucro s/PL) e comparar com o Retorno